A storage system is a computer that provides access to information that is stored on one or more storage devices connected to the storage system, such as disk drives (“disks”), flash memories, or storage arrays. The storage system includes an operating system that may implement a storage abstraction layer to logically organize the information as storage objects on the storage devices. With certain logical organizations, the storage abstraction layer may involve a file system which organizes information as a hierarchical structure of directories and files. Each file may be implemented as set of data structures, e.g., disk blocks, configured to store information, such as the actual data for the file. The file system typically organizes such data blocks as a logical “volume”, where each volume may be associated with its own file system and may further be organized into logical sub-volumes referred to as qtrees. Each directory, file, qtree, and volume may constitute a storage object. In other logical organizations, a file system may constitute a storage object with the storage abstraction layer managing multiple file systems.
The storage system may be configured to operate according to a client/server model of information delivery to allow one or more clients access to data stored on the storage system. In this model, the client may comprise an application executing on a computer that “connects” to the storage system over a computer network, such as a point-to-point link, shared local area network, wide area network or virtual private network implemented over a public network, such as the Internet. A client may access the storage devices by submitting access requests to the storage system, for example, a “write” request to store client data included in a request to storage devices or a “read” request to retrieve client data stored in the storage devices.
A storage system may have the capability to provide virtual hosts to one or more clients. A virtual host provides a way of dividing the storage in a storage system. Each virtual host runs its own operating system and can run its own processes. Each virtual host has assigned storage for storing data. In most virtual hosts, there is a need to share common executables and libraries.